当Gitlab中有动作触发时,就会触动 WebHook(钩子),Webhook也会随之返回一个Json数据, 可以根据这个json数据来实时监控项目工程,在Gitlab的Help中给出了很多字段,但唯独没有显性给出BuildEvents字段:
{
“brfore_sha”:””,
“build_allow_failure”:””,
“build_duration”:””,
“build_finished_at”:””,
“build_id”:””,
“build_name”:””,
“build_stage”:””,
“build_started_at”:””,
“build_status”:””,
“commit”:
{
“author_email”:””,
“author_name”:””,
“duration”:””,
“finished_at”:””,
“id”:””,
“message”:””,
“sha”:””,
“started_at”:””,
“status”:””
},
“object_kind”:””,
“project_id”:””,
“project_name”:””,
“ref”:”master”,
“repository”:
{
“description”:””,
“git_http_url”:””,
“git_ssh_url”:””,
“homepage”:””,
“name”:””,
“url”:””,
“visibility_level”:””
},
“sha”:””,
“tag”:””,
“user”:
{
“email”:””,
“id”:””,
“name”:””
}
}
但只有样例字段还是远远不够的,因为某些字段的含义我们很难理解(build中before_sha表示version,),此时就需要输出自己的代码build返回的json数据。在help中也有相应的方法代码,在此翻译一下,供以后使用,毕竟“好记性不如烂笔头”
S1 . 配置Ruby环境(安装Ruby软件时,点击第二个复选框(自动配置PATH))
S2. 建文本文件,粘贴代码,保存为print_http_body.rb
require 'webrick'
server = WEBrick::HTTPServer.new(:Port => ARGV.first)
server.mount_proc '/' do |req, res|
puts req.body
end
trap 'INT' do
server.shutdown
end
server.start
S3. 在文件所在目录下打开Cmd, 编辑 ruby print_http_body.rb 8000(8000是未被占用的端口)
S4. 在webhook receiver中添加Event,http://my.host:8000/ (my.host表示IP)
完成以上4步后,触发相关的时间,就会在Cmd页面中输出对应的Json数据。
例如,如果创建的是IssueEvent,则,创建新的Issue或对已有的Issue操作时,就会在Cmd页面输出Json数据
注:点击Test按钮,返回的均是Push的json数据,所以在测试API时出现错误很正常(保证代码正确的前提下,修改数据实体类的字段即可)